﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;
using WeifenLuo.WinFormsUI.Docking;
namespace BYManageInfoSystem
{
    public partial class Frm_MonthHuiLv : DockContent
    {
        private DGBY.BLL.BiZhiTab m_bllBiZhiTab = new DGBY.BLL.BiZhiTab();
        private DGBY.BLL.MonthHuiLvTab m_bllMonthHuiLvTab = new DGBY.BLL.MonthHuiLvTab();
        private int m_nSelectFeeTTLoanTabID = 0;
        public Frm_MonthHuiLv()
        {
            InitializeComponent();
        }
        private void InitCombox()
        {
            DataSet ds = m_bllBiZhiTab.GetList("");
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                this.comboBoxSourceBiZhi.DataSource = ds.Tables[0];
                this.comboBoxSourceBiZhi.DisplayMember = "币制名称";
                this.comboBoxSourceBiZhi.ValueMember = "BiZhiTabID";
                this.comboBoxSourceBiZhi.SelectedIndex = 0;
            }

            ds = m_bllBiZhiTab.GetList("");
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                this.comboBoxTargetBizhi.DataSource = ds.Tables[0];
                this.comboBoxTargetBizhi.DisplayMember = "币制名称";
                this.comboBoxTargetBizhi.ValueMember = "BiZhiTabID";
                this.comboBoxTargetBizhi.SelectedIndex = 0;
            }
        }
        private bool IsDecimal(string strInput)
        {
            bool bRet = Regex.IsMatch(strInput, @"([1-9]+[0-9]*(\.[0-9]+))|(0(\.[0-9]+))");
            return bRet;
        }

        private bool IsNum(string strInput)
        {
            bool bRet = Regex.IsMatch(strInput, @"^[1-9]+\d*$");
            return bRet;
        }

        private bool ValidDate(string strInput)
        {
            if (strInput.Length != 8)
                return false;
            else
                return IsNum(strInput);
        }

        public bool IsDecimal(ErrorProvider errorProvider1, TextBox TextBox)
        {
            if (TextBox.Text == "")
            {
                errorProvider1.SetError(TextBox, "内容不能为空！");
                return true;
            }
            else if (!IsDecimal(TextBox.Text) && !IsNum(TextBox.Text))
            {
                errorProvider1.SetError(TextBox, "必须输入数字");
                return true;
            }
            else
            {
                errorProvider1.SetError(TextBox, "");
                return false;
            }
        }

        public bool IsNum(ErrorProvider errorProvider1, TextBox TextBox)
        {
            if (TextBox.Text == "")
            {
                errorProvider1.SetError(TextBox, "内容不能为空！");
                return true;
            }
            else if (!IsNum(TextBox.Text))
            {
                errorProvider1.SetError(TextBox, "必须输入数字");
                return true;
            }
            else
            {
                errorProvider1.SetError(TextBox, "");
                return false;
            }
        }

        public bool IsNull(ErrorProvider errorProvider1, TextBox TextBox)
        {
            if (TextBox.Text == "")
            {
                errorProvider1.SetError(TextBox, "内容不能为空！");
                return true;
            }
            else
            {
                errorProvider1.SetError(TextBox, "");
                return false;
            }
        }
        private void Frm_MonthHuiLv_Load(object sender, EventArgs e)
        {
            InitCombox();
            LocalPrintPreveiw();
            InitUltraWinGridSetting();
        }
        /// 取得某月的第一天
        /// </summary>
        /// <param name="datetime">要取得月份第一天的时间</param>
        /// <returns></returns>
        private DateTime FirstDayOfMonth(DateTime datetime)
        {
            return datetime.AddDays(1 - datetime.Day);
        }
        /// <summary>
        /// 取得某月的最后一天
        /// </summary>
        /// <param name="datetime">要取得月份最后一天的时间</param>
        /// <returns></returns>
        private DateTime LastDayOfMonth(DateTime datetime)
        {
            return datetime.AddDays(1 - datetime.Day).AddMonths(1).AddDays(-1);
        }


        private void buttonAdd_Click(object sender, EventArgs e)
        {
            try
            {
                DateTime dtFirst = FirstDayOfMonth(this.dateTimePickerDate.Value);
                DateTime dtEnd = LastDayOfMonth(this.dateTimePickerDate.Value);
                DataSet m_ds = m_bllMonthHuiLvTab.GetHuiLvAllList("S.BiZhiName = '" + this.comboBoxSourceBiZhi.Text + "'"
                                                                   + " and T.BiZhiName = '" + this.comboBoxTargetBizhi.Text + "'"
                                                                   + " and BelongDate >= '" + dtFirst.Date + "'"
                                                                   + " and BelongDate <= '" + dtEnd.Date + "'");

                if (m_ds.Tables.Count > 0 && m_ds.Tables[0].Rows.Count > 0)
                {
                    MessageBox.Show("已经存在相应的设置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                DGBY.Model.MonthHuiLvTab modelMonthHuiLvTab = new DGBY.Model.MonthHuiLvTab();
                if (ClassInputValid.IsDecimal(this.errorProvider1, this.textBoxValue))
                    return;
                modelMonthHuiLvTab.OneHandredSource2Target = Convert.ToDecimal(this.textBoxValue.Text);


                if (this.comboBoxSourceBiZhi.SelectedValue != null)
                    modelMonthHuiLvTab.SourceBiZhiTabID = Convert.ToInt32(this.comboBoxSourceBiZhi.SelectedValue.ToString(), 10);

                if (this.comboBoxTargetBizhi.SelectedValue != null)
                    modelMonthHuiLvTab.TargetBiZhiTabID = Convert.ToInt32(this.comboBoxTargetBizhi.SelectedValue.ToString(), 10);

                modelMonthHuiLvTab.BelongDate = this.dateTimePickerDate.Value.Date;

                m_bllMonthHuiLvTab.Add(modelMonthHuiLvTab);
                Frm_Main.Log2DB(this.Text, "增加", this.comboBoxSourceBiZhi.Text);

                ShowAllRecordInDataGridView("");
                //MessageBox.Show("数据添加成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
        
        }
        private void ShowAllRecordInDataGridView(string strWhere)
        {
            ultraGrid1.DataSource = null;
            DataSet ds = m_bllMonthHuiLvTab.GetHuiLvAllList(strWhere);

            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                ultraGrid1.DataSource = ds.Tables[0];
                ultraGrid1.DisplayLayout.Bands[0].Columns[0].Hidden = true;
            }
        }
        private void buttonShowAll_Click(object sender, EventArgs e)
        {
            ShowAllRecordInDataGridView("");
        }

        private void buttonQuery_Click(object sender, EventArgs e)
        {
            DateTime dtFirst = FirstDayOfMonth(this.dateTimePickerDate.Value);
            DateTime dtEnd = LastDayOfMonth(this.dateTimePickerDate.Value);
            ShowAllRecordInDataGridView("S.BiZhiName = '" + this.comboBoxSourceBiZhi.Text + "'"
                                                               + " and T.BiZhiName = '" + this.comboBoxTargetBizhi.Text + "'"
                                                               + " and BelongDate >= '" + dtFirst.Date + "'"
                                                               + " and BelongDate <= '" + dtEnd.Date + "'");
        }

        private void buttonModify_Click(object sender, EventArgs e)
        {
            try
            {
                DateTime dtFirst = FirstDayOfMonth(this.dateTimePickerDate.Value);
                DateTime dtEnd = LastDayOfMonth(this.dateTimePickerDate.Value);
                DataSet m_ds = m_bllMonthHuiLvTab.GetHuiLvAllList("S.BiZhiName = '" + this.comboBoxSourceBiZhi.Text + "'"
                                                                   + " and T.BiZhiName = '" + this.comboBoxTargetBizhi.Text + "'"
                                                                   + " and BelongDate >= '" + dtFirst.Date + "'"
                                                                   + " and BelongDate <= '" + dtEnd.Date + "'");

                if (m_ds.Tables.Count > 0 && m_ds.Tables[0].Rows.Count > 0)
                {
                    MessageBox.Show("已经存在相应的设置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                DGBY.Model.MonthHuiLvTab modelMonthHuiLvTab = m_bllMonthHuiLvTab.GetModel(m_nSelectFeeTTLoanTabID);
                if (modelMonthHuiLvTab == null)
                {
                    MessageBox.Show("数据库不存在该记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                if (ClassInputValid.IsDecimal(this.errorProvider1, this.textBoxValue))
                    return;

                modelMonthHuiLvTab.OneHandredSource2Target = Convert.ToDecimal(this.textBoxValue.Text);


                if (this.comboBoxSourceBiZhi.SelectedValue != null)
                    modelMonthHuiLvTab.SourceBiZhiTabID = Convert.ToInt32(this.comboBoxSourceBiZhi.SelectedValue.ToString(), 10);

                if (this.comboBoxTargetBizhi.SelectedValue != null)
                    modelMonthHuiLvTab.TargetBiZhiTabID = Convert.ToInt32(this.comboBoxTargetBizhi.SelectedValue.ToString(), 10);

                modelMonthHuiLvTab.BelongDate = this.dateTimePickerDate.Value.Date;

                m_bllMonthHuiLvTab.Update(modelMonthHuiLvTab);

                Frm_Main.Log2DB(this.Text, "修改", this.comboBoxSourceBiZhi.Text);
                ShowAllRecordInDataGridView("");
                MessageBox.Show("数据修改成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            
        }
        private void ResetAllTextBox(Form form)
        {
            for (int i = 0; i < form.Controls.Count; i++)
            {
                if (form.Controls[i] is TextBox)
                {
                    (form.Controls[i] as TextBox).Text = "";
                }

                if (form.Controls[i] is GroupBox)
                {
                    for (int j = 0; j < form.Controls[i].Controls.Count; j++)
                    {
                        if (form.Controls[i].Controls[j] is TextBox)
                        {
                            (form.Controls[i].Controls[j] as TextBox).Text = "";
                        }
                    }
                }
            }
        }
        private void buttonDel_Click(object sender, EventArgs e)
        {
            if (m_bllMonthHuiLvTab.GetModel(m_nSelectFeeTTLoanTabID) == null)
            {
                MessageBox.Show("数据库不存在该记录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            if (MessageBox.Show("确实要删除该条记录!", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
            {
                m_bllMonthHuiLvTab.Delete(m_nSelectFeeTTLoanTabID);

                Frm_Main.Log2DB(this.Text, "删除", this.comboBoxSourceBiZhi.Text);
                ShowAllRecordInDataGridView("");
                MessageBox.Show("数据删除成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                ResetAllTextBox(this);
                return;
            }
        }

        private void ultraGrid1_AfterCellActivate(object sender, EventArgs e)
        {
            string strFeeTTLoanTabID = this.ultraGrid1.Rows[this.ultraGrid1.ActiveCell.Row.Index].Cells[0].Text;
            m_nSelectFeeTTLoanTabID = Convert.ToInt32(strFeeTTLoanTabID, 10);
            cellFeeTTLoanTabClick();
        }

        private void cellFeeTTLoanTabClick()
        {
            DGBY.Model.MonthHuiLvTab modelMonthHuiLvTab = m_bllMonthHuiLvTab.GetModel(m_nSelectFeeTTLoanTabID);
            if (modelMonthHuiLvTab != null)
            {
                this.textBoxValue.Text = modelMonthHuiLvTab.OneHandredSource2Target.ToString();



                if (modelMonthHuiLvTab.SourceBiZhiTabID != null)
                    this.comboBoxSourceBiZhi.SelectedValue = modelMonthHuiLvTab.SourceBiZhiTabID;
                if (modelMonthHuiLvTab.TargetBiZhiTabID != null)
                    this.comboBoxTargetBizhi.SelectedValue = modelMonthHuiLvTab.TargetBiZhiTabID;

                this.dateTimePickerDate.Value = (System.DateTime)modelMonthHuiLvTab.BelongDate;

            }
        }

        private void buttonExportToExcel_Click(object sender, EventArgs e)
        {
            DataTable dt = (DataTable)ultraGrid1.DataSource;

            if (dt != null)
            {
                if (dt.Rows.Count > 0)
                {
                    SaveFileDialog sfd = new SaveFileDialog();
                    sfd.Filter = "Excel文件(*.xls)|*.xls";
                    string outFile = "";

                    if (sfd.ShowDialog() == DialogResult.OK)
                    {
                        outFile = sfd.FileName;
                    }
                    else
                    {
                        return;
                    }

                    ultraGridExcelExporter1.Export(ultraGrid1, outFile);
                }
            }
        }

        private void buttonPrint_Click(object sender, EventArgs e)
        {
            this.ultraGridPrintDocument1.Grid = this.ultraGrid1;
            this.ultraPrintPreviewDialog1.Document = this.ultraGridPrintDocument1;
            this.ultraPrintPreviewDialog1.ShowDialog(this);
        }

        public void InitUltraWinGridSetting()
        {
            this.ultraGrid1.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.True;
            this.ultraGrid1.DisplayLayout.Override.RowSelectorNumberStyle = Infragistics.Win.UltraWinGrid.RowSelectorNumberStyle.VisibleIndex;
            this.ultraGrid1.DisplayLayout.Override.RowSelectorWidth = 40;
        }

        public void LocalPrintPreveiw()
        {
            Infragistics.Shared.ResourceCustomizer rc = Infragistics.Win.Printing.Resources.Customizer;//Resources.Customizer;
            rc.SetCustomizedString("PrintPreview_DialogCaption", "打印预览");
            rc.SetCustomizedString("PrintPreview_Tool_Print", "打印(&P)");
            rc.SetCustomizedString("PrintPreview_Tool_ClosePreview", "关闭(&C)");
            rc.SetCustomizedString("PrintPreview_Tool_ContextMenuPreviewZoom", "显示比例");
            rc.SetCustomizedString("PrintPreview_Tool_Current_Page", "当前页");
            rc.SetCustomizedString("PrintPreview_Tool_Exit", "退出(&X)");
            rc.SetCustomizedString("PrintPreview_Tool_First_Page", "第一页");
            rc.SetCustomizedString("PrintPreview_Tool_Go_To", "跳至");
            rc.SetCustomizedString("PrintPreview_Tool_Last_Page", "最后一页");
            rc.SetCustomizedString("PrintPreview_Tool_Next_Page", "下一页");
            rc.SetCustomizedString("PrintPreview_Tool_Previous_Page", "前一页");
            rc.SetCustomizedString("PrintPreview_Tool_Next_View", "下一视图(&N)");
            rc.SetCustomizedString("PrintPreview_Tool_Previous_View", "前一视图(&P)");
            rc.SetCustomizedString("PrintPreview_Tool_Hand_Tool", "手型工具(&H)");
            rc.SetCustomizedString("PrintPreview_Tool_Page_Setup", "页面设置(&U)");
            rc.SetCustomizedString("PrintPreview_Tool_Snapshot_Tool", "快照工具(&S)");
            rc.SetCustomizedString("PrintPreview_Tool_View", "视图(&V)");
            rc.SetCustomizedString("PrintPreview_Tool_Whole_Page", "合适页");
            rc.SetCustomizedString("PrintPreview_Tool_Zoom", "缩放(&Z)");
            rc.SetCustomizedString("PrintPreview_Tool_Zoom_In", "放大");

            rc.SetCustomizedString("PrintPreview_Tool_Zoom_Out", "缩小");

            rc.SetCustomizedString("PrintPreview_ToolCategory_Context_Menus", "上下文菜单");
            rc.SetCustomizedString("PrintPreview_ToolCategory_File", "文件");
            rc.SetCustomizedString("PrintPreview_ToolCategory_Menus", "菜单");
            rc.SetCustomizedString("PrintPreview_ToolCategory_Tools", "工具栏");
            rc.SetCustomizedString("PrintPreview_ToolCategory_View", "视图");
            rc.SetCustomizedString("PrintPreview_ToolCategory_Zoom_Mode", "缩放模式");

            rc.SetCustomizedString("PrintPreview_ToolTip_ClosePreview", "关闭");
            rc.SetCustomizedString("PrintPreview_ToolTip_Zoom", "缩放");
            rc.SetCustomizedString("StatusBar_Page_X_OF_X", "页:{0}/{1}");

            rc.SetCustomizedString("CustomizeImg_ToolBar_MenuBar", "菜单");
            rc.SetCustomizedString("CustomizeImg_ToolBar_Standard", "标准");
            rc.SetCustomizedString("CustomizeImg_ToolBar_View", "视图");
            rc.SetCustomizedString("PrintPreview_Tool_File", "文件(&F)");
            rc.SetCustomizedString("PrintPreview_Tool_Tools", "工具(&T)");
            rc.SetCustomizedString("PrintPreview_Tool_Dynamic_Zoom_Tool", "动态缩放工具(&D)");
            rc.SetCustomizedString("PrintPreview_Tool_Zoom_Out_Tool", "缩小工具");
            rc.SetCustomizedString("PrintPreview_Tool_Zoom_In_Tool", "放大工具");
            // rc.SetCustomizedString("PrintPreview_Tool_Page_Layout","菜单");
            rc.SetCustomizedString("PreviewRowColSelection_Cancel", "取消");
            rc.SetCustomizedString("PreviewRowColSelection_SelectedPages", "{0} x {1} 页");

            rc.SetCustomizedString("PreviewRowColSelection_Cancel", "取消");
            rc.SetCustomizedString("PrintPreview_Tool_Page_Width", "页宽");
            rc.SetCustomizedString("PrintPreview_ZoomListItem_MarginWidth", "文字宽度");
            rc.SetCustomizedString("PrintPreview_ZoomListItem_PageWidth", "页宽");
            rc.SetCustomizedString("PrintPreview_ZoomListItem_WholePage", "合适页");
            rc.SetCustomizedString("PrintPreview_Tool_Page_Layout", "页面布局");
            rc.SetCustomizedString("PrintPreview_Tool_Margin_Width", "文字宽度");
            rc.SetCustomizedString("ContextMenuPreviewHand", "缩放视图");


            rc.SetCustomizedString("PrintPreview_Tool_Reduce_Page_Thumbnails", "缩小");
            rc.SetCustomizedString("PrintPreview_Tool_Show_Page_Numbers", "显示页号");
            rc.SetCustomizedString("PrintPreview_Tool_ContextMenuThumbnail", "缩略图");
            rc.SetCustomizedString("PrintPreview_Tool_Enlarge_Page_Thumbnails", "放大");
            rc.SetCustomizedString("PrintPreview_Tool_Thumbnails", "缩略图");
            rc.SetCustomizedString("PrintPreview_Tool_Continuous", "连续排序");
            //说明
            rc.SetCustomizedString("StatusBar_DynamicZoom_Instructions", "单击并拖动进行缩放操作");
            rc.SetCustomizedString("StatusBar_Page_X_OF_X", "当前页: {0} / {1}");
            rc.SetCustomizedString("StatusBar_SnapShot_Instructions", "单击并拖动,系统将选定矩型区域复制到剪帖板");
            rc.SetCustomizedString("StatusBar_ZoomIn_Instructions", "单击并拖动,系统将放大选定矩型区域");
            rc.SetCustomizedString("StatusBar_ZoomOut_Instructions", "单击并拖动,系统将缩小选定矩型区域");
            rc.SetCustomizedString("StatusBar_Hand_Instructions", "单击并拖动以便显示更多内容");
        }
    }
}
